import 'package:flutter/foundation.dart';

import '../db/dao/msg_dao.dart';
import '../utils/listerer.dart';


/// 会话事件
enum MsgEvent {
  add,
  update,
  remove,
}

class MsgHelper {
  factory MsgHelper() {
    _singleton ??= MsgHelper._();
    return _singleton!;
  }
  static MsgHelper? _singleton;
  MsgHelper._();
  final ListenerManager<(MsgEvent, MsgInfo)> _controller =
      ListenerManager();

  /// 新增
  void add(MsgInfo msg) {
    _controller.add((MsgEvent.add, msg));
  }

  /// 更新操作
  void update(MsgInfo msg) {
    _controller.add((MsgEvent.update, msg));
  }

  /// 删除操作
  void remove(MsgInfo msg) {
    _controller.add((MsgEvent.remove, msg));
  }

  VoidCallback listen(void Function((MsgEvent, MsgInfo)) onData) {
    _controller.listener(onData);
    return () => _controller.remove(onData);
  }
}
